Many communities of Internet users share data files containing pictures, video and audio data with one another. In most communities, there are typically just a few users who provide these interesting data files and many more users who simply want to obtain them.
Users providing the files have typically done so either from altruism, from a desire to gain fame on the Internet in their particular network community, or from a desire to advertise a service and make money. Currently, various models for distribution of these types of files exist on the Internet.
One system for file distribution includes Usenet (Netnews), which allows a provider of a particular data file to post the data file to everyone that reads a particular newsgroup. This allows for widespread distribution of a posted data file. However, all data files posted go to all recipients, and each recipient may select only from the files that were recently posted. All users have to look over all items posted for items they are interested in, and posted files are removed from the system after a short time, typically within two or three days.
Another system for data file distribution includes a central website in which a data file owner makes his files available to all users on the network. While this allows recipients to select the files they wish to see, this approach has a number of drawbacks. First, the community of users must be informed of the existence of the website. Secondly, each website is structured differently, depending on the provider of the data, making it difficult for requesting users to locate data they want. Third, and perhaps most importantly, since there are only a few website providers and many data file requesters, the few providers are deluged with requests which overwhelms the provider""s website. Regardless of the number of users that download a given file, the relative availability of that file is solely based on the single copy at the website. The more popular a file is, the less likely a given user will be able to obtain it because of the traffic generated by all the other users attempting to download it. This is true especially in regard to large data files such as video or audio data files.
An improvement on the central website model for distributing files involves data file mirroring. In a data file mirroring system, a central server contains a master copy of files to be shared, and each mirror server connects to the central server and downloads all of the files to be mirrored. While this type of system spreads the load amongst all the mirror servers, it is inherently centralized, contains an identical set consisting of both popular and unpopular files and is not sensitive to use. For instance, a file that 10,000 users have downloaded is just as widely available as a file that only 10 users have downloaded. Since mirroring is centrally administered and by definition is a complete copy of a central repository, it is not use-sensitive.
Yet another system for file distribution involves a chat room where users of the chat room can exchange data that they are interested in trading in real time. This allows individuals to exchange data and does not require expensive, high-bandwidth central servers. However, because there are many requesters and few providers, the few providers may become deluged with requests. What is more, they must handle the requests individually and manually.
As a result of the problems listed above, few users in these communities wish to go through the effort and expense required in the previously discussed distribution models. Thus, the widespread availability of data files quickly turns into a one-for-one exchange between specific parties.
Thus, it can be seen that there is a long-standing need on the Internet for a system that facilitates the distribution of data files in a community of users.
The distribution system must provide users a way to quickly and reliably locate data they wish to acquire.
The distribution system must provide wide distribution for files that are popular, while at the same time provide limited distribution for files that are not of general interest.
Importantly, the mechanism for actually transferring the data file between users must be distributed, not centralized, so that bandwidth costs of providing data are fairly and properly distributed across the users of the community. Therefore, any user can contribute new data files without relying on some central authority.
The invention contained herein describes a use-sensitive system for distribution of data files between users in a networked community of users. The system comprises each user having a distribution application having at least one data file repository that has the ability to store at least one data file. The distribution application additionally includes a data file transfer server that makes available all data files located in the data file repository for download by other users, a file transfer client, and a user interface for displaying the actions and status of the distribution application to the user. In the system, the file transfer client connects to the file transfer server and downloads a data file, and, when the downloaded file is placed in the repository, the distribution application automatically makes available the data file to other distribution applications in the networked community of users.
The system preferably has a file index server containing a file index, the file index further having file descriptions of any data file in the at least one file repository of each distribution application. In an embodiment, the system further comprises an inventory module for automatically adding a file description to the file index when a new data file is added to the repository of any distribution application. The inventory module preferably automatically removes the file description in the file index when the file is removed from the repository of any distribution application. The inventory module also preferably automatically removes all file descriptions from the file index associated with any distribution application when that distribution application is disconnected from the file index server.
In an embodiment of the invention, the system also includes an audio file player module, wherein audio files located in the data file repository are audibly presented to the user.
In yet another embodiment, the distribution application has an audio file converter module, which constructs audio files and places them in the data file repository, thus making the new files immediately available to the community of users.
In an embodiment, the system further comprises a video file player module, wherein video files located in the data file repository are displayed visually to the user.
The system preferably has means for downloading a data file from a protected distribution application, wherein the requesting distribution application transmits a download request message to the index server, the index server forwards the download request message to the protected distribution application, the protected distribution application initiates a connection to the requesting distribution application, and then transmits the file to the requesting distribution application.
The file description comprises any of the following: a title of the data file, the size of the data file, the type of data file, any text associated with the data file, the creator of the data file, the quality rating of the data file, and the distribution application where the data file resides.
In a preferred embodiment, the system further comprises a search module for searching the file index, wherein a search request submitted by the distribution application is processed and results in a search response returned to that distribution application, wherein the search response comprises file descriptions matching the search request. Preferably, the search module further comprises a filter module for pruning a search response of file descriptions that do not meet a limitation criteria. In an embodiment, the limitation criteria comprises a bandwidth limitation, wherein the search response is pruned of file descriptions from distribution applications that have a bandwidth capability that is below the bandwidth limitation. In an embodiment, the search module comprises means for pruning the search response of file descriptions from distribution applications that will not accept further download requests. In a preferred embodiment, the search module comprises means for pruning the search response of file descriptions from the distribution application.
In an embodiment, the distribution application contains a sort module for sorting the search response. Preferably, the search response is sorted using a responsiveness value, wherein the responsiveness value for another distribution application is determined by measuring the amount of time an echo reply message takes to be returned by the other distribution application to the user""s distribution application. In an embodiment, the search response is pruned of file descriptions from any distribution application that did not respond to the echo request within a predetermined period of time.
The data files are of the type selected from the group comprising: an audio data file, a text data file, an image data file, a video data file, a software executable data file, or a data file containing combinations, such as a multimedia data file.
In another embodiment, the invention further comprises an automatic selection module, wherein a data file description is automatically selected and the associated data file is downloaded, the automatic selection module choosing a data file description from at least two candidate data file descriptions located on at least two file transfer servers using a scoring mechanism and then causing the file transfer client to initiate a download from the file transfer server with the best score. Preferably, the optimal score in a scoring mechanism is calculated from any combination of the following factors: the file transfer server with a low round-trip response time, the file transfer server with a high network bandwidth, the file transfer server with a high percentage of successful downloads, and the file transfer server with the fewest active file transfers.
In yet another embodiment, the system further comprises a parallel download module, wherein different subsections of an identical data file are downloaded from at least two other distribution applications. Preferably, the at least two other distribution applications are automatically selected using a scoring mechanism.
The invention is a system of distribution applications that all incorporate both a file transfer client and a file transfer server. Each distribution application contains a repository of files to be provided to others on the network. In the preferred embodiment, any files downloaded to a distribution application are automatically added to that distribution application""s repository of files, making newly downloaded files available for re-export.
Joining the file transfer client and the file transfer server means that all users will act as suppliers of interesting data files to the community, including especially those users that are initially only interested in obtaining data files. As users are more successful at obtaining more files, they can in turn become providers of the files that they obtain to the rest of the community.
The system of distribution applications is use-sensitive, because the community of users that interact using these distribution applications determines the particular files that flow through and exist on the network. Popular files that are downloaded frequently will exist in a large number of repositories. If a given file has had 10,000 users download it, there are 10,000 places where other users can find this file, making it extremely unlikely that any one site will be overloaded with requests. Likewise, unpopular files will only exist in a couple of places, unlike a mirrored system that must store a copy of each file held by the central repository. However, if an unpopular file suddenly becomes popular, the system as a whole reacts rapidly to the change in usage to provide increased availability for the file as demand increases, because each new user that successfully downloads the file becomes in turn a provider for the file.
Preferably, the invention also includes an index server containing the list of all the files on all the distribution applications. In this way, a user can obtain from the index server a high quality distribution application from which to download a desired file. All distribution applications contribute a description of all files in their repositories to the index server when they first start up, and when a distribution application is disconnected, all of the descriptions associated with that distribution application are removed from the index server automatically, keeping the index server up to date.